package main

import (
	"fmt"
	"github.com/robfig/cron"
	"math/rand"
	"os"
	"time"
	"wx-api/dsp-api/cache"
	"wx-api/dsp-api/config"
	"wx-api/dsp-api/services/se_dsp_report"
)

func main() {

	fmt.Println("server start。。。", time.Now().Format("2006-01-02 15:04:05"))
	//时间初始化
	timelocal := time.FixedZone("CST", 3600*8)
	time.Local = timelocal

	rand.Seed(time.Now().UnixNano()) // 初始化随机种子

	arg := os.Getenv("MODE")
	if arg == "" {
		arg = "dev"
	}
	//加载配置文件
	ConfInit(arg)
	//加载缓存
	cache.CacheInit()

	se_dsp_report.AutoDspReport()
	//加载定时任务
	c := cron.New()
	//每5分钟计算一次
	_, _ = c.AddFunc("@every 5m", func() {
		se_dsp_report.AutoDspReport()
	})
	defer c.Stop()
	c.Start()
	//监听端口
	r := RouteApi(arg)
	err := r.Run(":6524")
	if err != nil {
		panic(err)
	}
}

func ConfInit(arg string) {
	//加载配置文件
	starttime := time.Now()
	fmt.Println("加载配置文件。。。。")
	err := config.InitConfig("./conf/" + arg + ".json")
	if err != nil {
		panic(err)
		return
	}
	fmt.Println("配置文件加载完毕，耗时:", time.Since(starttime).Nanoseconds()/1e6)
	fmt.Println("加载mg配置。。。。")
	config.MgTableInit()
	fmt.Println("mg加载完毕，耗时:", time.Since(starttime).Nanoseconds()/1e6)
	fmt.Println("加载ck配置。。。。")
	config.CkInit()
	fmt.Println("ck加载完毕，耗时:", time.Since(starttime).Nanoseconds()/1e6)
	fmt.Println("加载redis配置。。。。")
	config.InitSspRedis()
	fmt.Println("redis加载完毕，耗时:", time.Since(starttime).Nanoseconds()/1e6)

}
